package Agn;
/**
 * @Author:CJJ
 * 2025/4/15
 * 聚合
 */
public class Agn {
    /**
     * 聚合就是一个整体与部分的关系。
     * 谁是谁的一部分,只要可以说通，那么他们之间的关系就是聚合关系。
     * 如：脑袋是人的一部分 身体和胳膊也是人的一部分
     * 聚合关系分得再细一点的话就可以分为聚集关系和组合关系,着三者是聚集关系
     * (假如这个队长即是足球队长,同时也是篮球的队长，一个人分属两个不同的球队,这是可以的
     * ,球队与队长之间没有我离不开你,你离不开我这种情况,所以如果分得更细的话,这种就叫做聚集关系)
     * 还有一种情况叫组合,身体也一样,不可能既属于你又属于别人,所以你的身体和脑袋是密不可分的，这是
     * 一种更加严格的聚合关系,专门取的名字叫组合。
     */

    /**
     * 实现关系
     *  作为父类来说,我觉得有这样一个方法,但我不知道怎么去实现，谁去实现,我的子类去实现,这就是实现关系，
     *  和实现关系息息相关的还有一种关系叫多态
     */

    /**
     * 多态：
     *  同一类的对象收到相同消息时,会得到不同的结果。而这个消息是不可预测的。多态,顾名思义,
     *  就是多种状态,也就是多种结果。简单的说：就是用基类的引用指向子类的对象。
     *  这些关系可以同时存在不同的类之间，通过合理地设计和建立这些关系,可以实现模块化,可扩展和可维护的
     *  代码结构。在面向对象编程中,类与类之间的关系是实现软件系统的重要组成部分。
     *
     */

    /**
     * 反射：
     *  反射就是程序在运行时，能够获取自己或者别人（类、对象）的信息，并且可以操作对象的属性和方法。
     *  反射就是程序在运行期间,获取对象的各种信息的过程。根据class实例,获取class各种信息的过程就是反射。
     *
     *  任何一个类class的实例,都是由JVM动态加载实现的。JVM为每一个加载的class创建了对应的class实例,并管理
     *  所有信息包括类名,包名,字段名,方法等。这里的动态加载是说JVM会在程序使用到某个class时候才会加载实现类。
     *
     *  反射的管理
     *   如何获取一个类的实例 直接获取Clas实例,实例变量获取,类完整名获取
     */

    /**
     * 动态代理：
     *  所有接口类型不能实例化,如何不实现接口类,而是在运行期间创建某个实例,使用动态代理方法。过程定义
     *  InvocationHandler实例,负责实现接口方法的调用。创建interface实例,三个参数是接口类class
     *  需要实现的接口new Class 接口方法实例;强制转化Object接口,调用接口即可
     *  这部分涉及代理模式,动态代理通常使用class是直接定义,在装载到JVM上,运行时可以查到所有的信息,就像
     *  入学时每个人都需要登记一样;但是总有些情况,不需要知道类,也不能知道类的信息
     */

    /**
     * 注解
     * java又被戏称为“面向注解编程”,也是不无道理。注解用于简化开发,举个简单例子,@bean注解放在一个类的上方,
     * 在编译时会自动生成get/set方法,简化开发
     */
}
